
package org.authsum.stitches.domain;

import java.io.Serializable;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;


/**
 * <p>Java class for AttributeValue complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="AttributeValue">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="attribute" type="{http://domain.stitches.authsum.org}Attribute" minOccurs="0"/>
 *         &lt;element name="beforeDelete" type="{http://www.w3.org/2001/XMLSchema}anyType" minOccurs="0"/>
 *         &lt;element name="beforeInsert" type="{http://www.w3.org/2001/XMLSchema}anyType" minOccurs="0"/>
 *         &lt;element name="beforeUpdate" type="{http://www.w3.org/2001/XMLSchema}anyType" minOccurs="0"/>
 *         &lt;element name="binaryData" type="{http://www.w3.org/2001/XMLSchema}base64Binary" minOccurs="0"/>
 *         &lt;element name="binaryDataSize" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
 *         &lt;element name="contentVersion" type="{http://domain.stitches.authsum.org}ContentVersion" minOccurs="0"/>
 *         &lt;element name="endDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *         &lt;element name="extractedText" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="fileName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="id" type="{http://www.w3.org/2001/XMLSchema}long" minOccurs="0"/>
 *         &lt;element name="longLat" type="{http://domain.stitches.authsum.org}LongLat" minOccurs="0"/>
 *         &lt;element name="s3Asset" type="{http://www.w3.org/2001/XMLSchema}anyType" minOccurs="0"/>
 *         &lt;element name="scaledImages" type="{http://domain.stitches.authsum.org}ArrayOfScaledImage" minOccurs="0"/>
 *         &lt;element name="startDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *         &lt;element name="valueAsBoolean" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
 *         &lt;element name="valueAsDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *         &lt;element name="valueAsDouble" type="{http://www.w3.org/2001/XMLSchema}double" minOccurs="0"/>
 *         &lt;element name="valueAsInteger" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
 *         &lt;element name="valueAsString" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="version" type="{http://www.w3.org/2001/XMLSchema}long" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AttributeValue", propOrder = {
    "attribute",
    "beforeDelete",
    "beforeInsert",
    "beforeUpdate",
    "binaryData",
    "binaryDataSize",
    "contentVersion",
    "endDate",
    "extractedText",
    "fileName",
    "id",
    "longLat",
    "s3Asset",
    "scaledImages",
    "startDate",
    "valueAsBoolean",
    "valueAsDate",
    "valueAsDouble",
    "valueAsInteger",
    "valueAsString",
    "version"
})
public class AttributeValue
    implements Serializable
{

    @XmlElementRef(name = "attribute", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Attribute> attribute;
    @XmlElementRef(name = "beforeDelete", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Object> beforeDelete;
    @XmlElementRef(name = "beforeInsert", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Object> beforeInsert;
    @XmlElementRef(name = "beforeUpdate", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Object> beforeUpdate;
    @XmlElementRef(name = "binaryData", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<byte[]> binaryData;
    protected Integer binaryDataSize;
    @XmlElementRef(name = "contentVersion", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<ContentVersion> contentVersion;
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar endDate;
    @XmlElementRef(name = "extractedText", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<String> extractedText;
    @XmlElementRef(name = "fileName", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<String> fileName;
    @XmlElementRef(name = "id", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Long> id;
    @XmlElementRef(name = "longLat", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<LongLat> longLat;
    @XmlElementRef(name = "s3Asset", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Object> s3Asset;
    @XmlElementRef(name = "scaledImages", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<ArrayOfScaledImage> scaledImages;
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar startDate;
    @XmlElementRef(name = "valueAsBoolean", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Boolean> valueAsBoolean;
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar valueAsDate;
    @XmlElementRef(name = "valueAsDouble", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Double> valueAsDouble;
    @XmlElementRef(name = "valueAsInteger", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Integer> valueAsInteger;
    @XmlElementRef(name = "valueAsString", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<String> valueAsString;
    @XmlElementRef(name = "version", namespace = "http://domain.stitches.authsum.org", type = JAXBElement.class)
    protected JAXBElement<Long> version;

    /**
     * Gets the value of the attribute property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Attribute }{@code >}
     *     
     */
    public JAXBElement<Attribute> getAttribute() {
        return attribute;
    }

    /**
     * Sets the value of the attribute property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Attribute }{@code >}
     *     
     */
    public void setAttribute(JAXBElement<Attribute> value) {
        this.attribute = ((JAXBElement<Attribute> ) value);
    }

    /**
     * Gets the value of the beforeDelete property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Object }{@code >}
     *     
     */
    public JAXBElement<Object> getBeforeDelete() {
        return beforeDelete;
    }

    /**
     * Sets the value of the beforeDelete property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Object }{@code >}
     *     
     */
    public void setBeforeDelete(JAXBElement<Object> value) {
        this.beforeDelete = ((JAXBElement<Object> ) value);
    }

    /**
     * Gets the value of the beforeInsert property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Object }{@code >}
     *     
     */
    public JAXBElement<Object> getBeforeInsert() {
        return beforeInsert;
    }

    /**
     * Sets the value of the beforeInsert property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Object }{@code >}
     *     
     */
    public void setBeforeInsert(JAXBElement<Object> value) {
        this.beforeInsert = ((JAXBElement<Object> ) value);
    }

    /**
     * Gets the value of the beforeUpdate property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Object }{@code >}
     *     
     */
    public JAXBElement<Object> getBeforeUpdate() {
        return beforeUpdate;
    }

    /**
     * Sets the value of the beforeUpdate property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Object }{@code >}
     *     
     */
    public void setBeforeUpdate(JAXBElement<Object> value) {
        this.beforeUpdate = ((JAXBElement<Object> ) value);
    }

    /**
     * Gets the value of the binaryData property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link byte[]}{@code >}
     *     
     */
    public JAXBElement<byte[]> getBinaryData() {
        return binaryData;
    }

    /**
     * Sets the value of the binaryData property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link byte[]}{@code >}
     *     
     */
    public void setBinaryData(JAXBElement<byte[]> value) {
        this.binaryData = ((JAXBElement<byte[]> ) value);
    }

    /**
     * Gets the value of the binaryDataSize property.
     * 
     * @return
     *     possible object is
     *     {@link Integer }
     *     
     */
    public Integer getBinaryDataSize() {
        return binaryDataSize;
    }

    /**
     * Sets the value of the binaryDataSize property.
     * 
     * @param value
     *     allowed object is
     *     {@link Integer }
     *     
     */
    public void setBinaryDataSize(Integer value) {
        this.binaryDataSize = value;
    }

    /**
     * Gets the value of the contentVersion property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link ContentVersion }{@code >}
     *     
     */
    public JAXBElement<ContentVersion> getContentVersion() {
        return contentVersion;
    }

    /**
     * Sets the value of the contentVersion property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link ContentVersion }{@code >}
     *     
     */
    public void setContentVersion(JAXBElement<ContentVersion> value) {
        this.contentVersion = ((JAXBElement<ContentVersion> ) value);
    }

    /**
     * Gets the value of the endDate property.
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getEndDate() {
        return endDate;
    }

    /**
     * Sets the value of the endDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setEndDate(XMLGregorianCalendar value) {
        this.endDate = value;
    }

    /**
     * Gets the value of the extractedText property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link String }{@code >}
     *     
     */
    public JAXBElement<String> getExtractedText() {
        return extractedText;
    }

    /**
     * Sets the value of the extractedText property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link String }{@code >}
     *     
     */
    public void setExtractedText(JAXBElement<String> value) {
        this.extractedText = ((JAXBElement<String> ) value);
    }

    /**
     * Gets the value of the fileName property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link String }{@code >}
     *     
     */
    public JAXBElement<String> getFileName() {
        return fileName;
    }

    /**
     * Sets the value of the fileName property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link String }{@code >}
     *     
     */
    public void setFileName(JAXBElement<String> value) {
        this.fileName = ((JAXBElement<String> ) value);
    }

    /**
     * Gets the value of the id property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Long }{@code >}
     *     
     */
    public JAXBElement<Long> getId() {
        return id;
    }

    /**
     * Sets the value of the id property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Long }{@code >}
     *     
     */
    public void setId(JAXBElement<Long> value) {
        this.id = ((JAXBElement<Long> ) value);
    }

    /**
     * Gets the value of the longLat property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link LongLat }{@code >}
     *     
     */
    public JAXBElement<LongLat> getLongLat() {
        return longLat;
    }

    /**
     * Sets the value of the longLat property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link LongLat }{@code >}
     *     
     */
    public void setLongLat(JAXBElement<LongLat> value) {
        this.longLat = ((JAXBElement<LongLat> ) value);
    }

    /**
     * Gets the value of the s3Asset property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Object }{@code >}
     *     
     */
    public JAXBElement<Object> getS3Asset() {
        return s3Asset;
    }

    /**
     * Sets the value of the s3Asset property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Object }{@code >}
     *     
     */
    public void setS3Asset(JAXBElement<Object> value) {
        this.s3Asset = ((JAXBElement<Object> ) value);
    }

    /**
     * Gets the value of the scaledImages property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link ArrayOfScaledImage }{@code >}
     *     
     */
    public JAXBElement<ArrayOfScaledImage> getScaledImages() {
        return scaledImages;
    }

    /**
     * Sets the value of the scaledImages property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link ArrayOfScaledImage }{@code >}
     *     
     */
    public void setScaledImages(JAXBElement<ArrayOfScaledImage> value) {
        this.scaledImages = ((JAXBElement<ArrayOfScaledImage> ) value);
    }

    /**
     * Gets the value of the startDate property.
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getStartDate() {
        return startDate;
    }

    /**
     * Sets the value of the startDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setStartDate(XMLGregorianCalendar value) {
        this.startDate = value;
    }

    /**
     * Gets the value of the valueAsBoolean property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Boolean }{@code >}
     *     
     */
    public JAXBElement<Boolean> getValueAsBoolean() {
        return valueAsBoolean;
    }

    /**
     * Sets the value of the valueAsBoolean property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Boolean }{@code >}
     *     
     */
    public void setValueAsBoolean(JAXBElement<Boolean> value) {
        this.valueAsBoolean = ((JAXBElement<Boolean> ) value);
    }

    /**
     * Gets the value of the valueAsDate property.
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getValueAsDate() {
        return valueAsDate;
    }

    /**
     * Sets the value of the valueAsDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setValueAsDate(XMLGregorianCalendar value) {
        this.valueAsDate = value;
    }

    /**
     * Gets the value of the valueAsDouble property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Double }{@code >}
     *     
     */
    public JAXBElement<Double> getValueAsDouble() {
        return valueAsDouble;
    }

    /**
     * Sets the value of the valueAsDouble property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Double }{@code >}
     *     
     */
    public void setValueAsDouble(JAXBElement<Double> value) {
        this.valueAsDouble = ((JAXBElement<Double> ) value);
    }

    /**
     * Gets the value of the valueAsInteger property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Integer }{@code >}
     *     
     */
    public JAXBElement<Integer> getValueAsInteger() {
        return valueAsInteger;
    }

    /**
     * Sets the value of the valueAsInteger property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Integer }{@code >}
     *     
     */
    public void setValueAsInteger(JAXBElement<Integer> value) {
        this.valueAsInteger = ((JAXBElement<Integer> ) value);
    }

    /**
     * Gets the value of the valueAsString property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link String }{@code >}
     *     
     */
    public JAXBElement<String> getValueAsString() {
        return valueAsString;
    }

    /**
     * Sets the value of the valueAsString property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link String }{@code >}
     *     
     */
    public void setValueAsString(JAXBElement<String> value) {
        this.valueAsString = ((JAXBElement<String> ) value);
    }

    /**
     * Gets the value of the version property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Long }{@code >}
     *     
     */
    public JAXBElement<Long> getVersion() {
        return version;
    }

    /**
     * Sets the value of the version property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Long }{@code >}
     *     
     */
    public void setVersion(JAXBElement<Long> value) {
        this.version = ((JAXBElement<Long> ) value);
    }

}
